/**
 * 查询坐席任务列表入参
 */
export interface GetTaskInfoParam {
  pageSize: number;
  pageNo: number;
  taskName?: string;
  beginTime?: string;
  endTime?: string;
  taskStatus?: TaskStatus | '';
}

/**
 * 查询坐席任务列表返回的信息
 */
export interface TaskInfo {
  /**任务id */
  taskId: number;
  /**任务名称 */
  taskName: string;
  /**任务描述 */
  taskDescribe: string;
  /** 当前轮次 */
  currentRound: number;
  /** 当前状态 */
  taskStatus: TaskStatus;
  /** 总任务数 */
  totalTaskNum: number;
  /** 已完成任务数 */
  finishedTaskNum: number;
  /** 创建时间 */
  createTime: string;
  /**机器人ID*/
  robotId: number;
  /**机器人名称*/
  robotName: string;
  /**外呼语音类型： 0：TTS， 1：录音*/
  soundType: number;
  /**创建人*/
  nickName: string;
  /**执行时间段[{"start":"09:10","end":"09:20"}]*/
  allowTimes: string;
  /**坐席组id */
  seatsGroupId: number;
  /**坐席组名称 */
  seatsGroupName: string;
  /**最大弹屏数*/
  maxSeatsSession: number;
  /**增加 taskType 任务类型 2：人机协同，3：人工自动外呼*/
  flowType: number;
}

/**
 * 坐席任务进度信息
 */
export interface TaskProcessInfo {
  /** 总数 */
  totalCount: number;
  /** 已呼数 */
  calledCount: number;
  /** 未呼数 */
  notCalledCount: number;
}

/**
 * 任务状态
 */
export enum TaskStatus {
  /**全部 */
  ALL = 0,
  /** 未执行 */
  NOT_HANDLE = 1,
  /** 执行中 */
  IN_HANDLE = 2,
  /** 已完成 */
  HAD_DONE = 3,
  /** 已过期 */
  OUT_TIME = 4,
  /** 禁呼中 */
  NO_CALL = 5,
  /** 已取消 */
  HAD_CANCEL = 6,
  /** 暂停中 */
  HAD_STOP = 7,
}

/**
 * 会话历史记录
 */
export interface TaskDialogueInfo {
  /**序号*/
  index: number;
  /** 话者角色 0：机器人 ，1：用户， 2：人工坐席 */
  role: number;
  /**未理解状态：0：未理解，1：正常*/
  status: number;
  /** 文本 */
  text: string;
  /** 时间 */
  time: string;
  /** 语音地址（role为  “1：用户， 2：人工坐席” 时有值） */
  url: string;
}

export interface TaskCallRecordInfoDetail {
  /** 通话记录ID */
  callRecordId: string;
  /** 任务名称 */
  taskName: string;
  /** 主叫号码 */
  callerNumber: string;
  /** 被叫号码 */
  calledNumber: string;
  /** 被叫姓名 */
  calledName: string;
  /** 被叫备注 */
  calledRemark: string;
  /** 用户意向 */
  userIntention: string;
  /** 执行次数 */
  callRound: number;
  /** 呼叫开始时间 */
  callBeginTime: string;
  /** 呼叫结束时间 */
  callEndTime: string;
  /** 通话时长(s) */
  callTalkTime: number;
  /** 呼叫状态,  1、成功；2、关机；3、空号；4、停机；5、正在通话中；6、用户拒接；7、无法接通；8、暂停服务；9、用户正忙；10、拨号方式不正确；11、呼入限制；12、来电提醒（各类秘书服务）；13、呼叫转移失败；14、网络忙；15、无人接听；16、欠费；17、无法接听；18、改号；19、线路故障（线路不能呼出，比如SIM卡欠费）；20、稍后再拨（各种稍后再拨提示） */
  callStatus: number;
  /** 机器人标识 */
  nluId: string;
  /**  */
  soundRecord: {
    /** 录音地址 */
    url: string;
    /** 录音时长(s) */
    time: number;
    /** 回话记录 */
    recordList: {
      /** 话者角色 0：用户 ，1：机器人， 2：人工坐席 */
      role: number;
      /**
       * 0：未理解，1：正常
       */
      status: number;
      /** 文本 */
      text: string;
      /** 时间 */
      time: string;
      /** 录音地址 */
      url: string;
    }[];
    /** 如果没有转人工，该值为空对象 "{}" */
    transferManual: {
      /** 转人工时间 */
      time: string;
      /** 客服名称 */
      customerServiceName: string;
    };
  };
}

/**
 * 人工监听-呼叫列表
 */
export interface ManListenCall {
  /** 任务id */
  taskId: number;
  /** 完成呼叫总数 */
  countComplete: number;
  /** 正在呼叫总数 */
  countProcess: number;
  /** 列表内容 */
  sessions: ManListenCallSession[];
  /** 任务当前状态-start:任务启动触发通知; process:任务进行中定时通知; end:任务执行结束触发通知; expired:任务执行过期触发通知; paused:任务执行暂停通知; forbid:执行中的任务，禁止呼叫时间段定时通知"*/
  eventType: 'start' | 'process' | 'end' | 'expired' | 'paused' | 'forbid';
}

/**人工监听-呼叫session信息 */
export interface ManListenCallSession {
  active?: boolean;
  /** 对话Id */
  callRecordId: string;
  /** 会话串行号码 */
  callSerialNumber: string;
  /** 呼叫中心对话id */
  callId: string;
  /** 被叫号码 */
  number: string;
  /** 号码状态，0-未呼，1-呼叫中，2-等待坐席，3-通话中 */
  state: 0 | 1 | 2 | 3;
  /** 呼叫开始时间 */
  inviteTime: string;
  /** 用户振铃时间 */
  ringTime: string;
  /** 用户应答时间 */
  answerTime: string;
  /** 处理会话状态为（1-呼叫中、3-通话中）的记录，去数据库中查询该任务下的手机号对应的信息（被叫姓名，被叫备注） */
  calledName: string;
  /** 处理会话状态为（1-呼叫中、3-通话中）的记录，去数据库中查询该任务下的手机号对应的信息（被叫姓名，被叫备注） */
  calledRemarks: string;
}

/**
 * 查询坐席通话记录列表-入参
 */
export interface GetCallRecordParams {
  pageSize: number;
  pageNo: number;
  /**主叫或被叫号码 */
  phoneNumber?: string;
  /**时间类型 1.今天；2.本周；3.本月; 4.全部；5.指定时间段（该项需要设置beginTime和endTime参数）*/
  timeType?: number;
  /** 时间范围 - 开始（格式：2021-05-14 00:00:00）*/
  beginTime: string;
  endTime: string;
}

/**
 * 查询坐席通话记录列表-返回
 */
export interface TaskCallRecordInfo {
  /** 通话记录ID */
  callRecordId: string;
  /** 主叫号码 */
  callerNumber: string; //3期缺？
  /** 被叫号码 */
  calledNumber: string;
  /** 任务ID */
  taskId: number;
  /**任务名称*/
  taskName: string;
  /**起呼时间*/
  callBeginTime: string;
  /**通话时长*/
  callTalkTime: number;
  /**任务状态（1-未执行，2-执行中，3-已完成，4-已过期，5-禁呼中，6-已取消 7-暂停中） */
  taskStatus: number;
  /**任务类型 0:机器人流程，1：通知流程，2:人机协同，3.人人外呼 */
  taskType: number;
}
